<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 代理一个函数，调用函数时不是指向函数中的代码，而是指向代理实例中的内容
        function fn(a) {
            console.log(a,'我是原始函数，我是一个傀儡');
        }
        // handler 句柄 处理器
        let handler = {
            apply(target, ctx, args) {
                // target 原始函数
                // ctx context上下文，语境
                // args 参数的集合
                // console.log(target, ctx, args);
                // console.log('我才是幕后主使');
                target(args) // 执行原始代码
            }
        }
        let p1 = new Proxy(fn, handler);
        // fn();
        p1(666) // 代替原始函数的执行
    </script>
</body>
</html>